// class Stack{
//     constructor(){
//         this.items={}
//         this.count=0
//     }
//     push(element){
//         this.items[this.count]=element;
//         this.count++;
//     }
//     isEmpty(){
//         return this.count===0
//     }
//     pop(){
//         if (this.isEmpty()) {
//             return undefined
//         }
//         const result= this.items[this.count--]
//         delete this.items[this.count--]
//         return result
//     }
//     size(){
//          return this.count;
//     }
//     peek(){
//         return this.items[this.count-1]
//     }
//     clear(){
//         this.count=0
//         this.items={}
//     }
//     toString () {
//         if (this.isEmpty()) {
//         return ''
//         }
//         let result = this.items['0']
//         for(let i = 1; i < this.count; i++) {
//         result = `${result},${this.items[i]}`
//         }
//         return result
//     }
// }

class Stack {
    constructor () {
      this.count = 0
      this.items = {}
    }
    push (element) {
      this.items[this.count] = element
      this.count++
    }
    size () {
      return this.count
    }
    isEmpty () {
      return this.count === 0
    }
    pop () {
      if (this.isEmpty()) {
        return undefined
      }
      this.count--
      const result = this.items[this.count]
      delete this.items[this.count]
      return result
    }
    peek () {
      return this.items[this.count - 1]
    }
    clear () {
      this.count = 0
      this.items = {}
    }
    toString () {
      if (this.isEmpty()) {
        return ''
      }
      let result = this.items['0']
      for(let i = 1; i < this.count; i++) {
        result = `${result},${this.items[i]}`
      }
      return result
    }
}


// function ccc(a) {
//     const stack = new Stack()
//     let num=a//被除数
//     let rem;//用于储存余数
//     let binaryString=''
//     while (num>0) {
//         rem=Math.floor(num%2)//获取余数
//         num=Math.floor(num/2)//获取商
//         stack.push(rem)//入栈
//     }
//     while(!stack.isEmpty()){
//         c = stack.pop()
//         binaryString = binaryString + c
//     }
//     return binaryString;
// }
// console.log(ccc(16));
function decimalToBinary (decNumber) {
    const stack = new Stack()
    let number = decNumber  //被除数
    let rem //用于存储每次余数的对象
    let binaryString = ''
    while (number > 0) {
      rem = Math.floor(number % 2)    // 获取余数
      stack.push(rem)

      number = Math.floor(number / 2) // 获取商
    }
    while (!stack.isEmpty()) {
      // binaryString = binaryString + stack.pop().toString()
      binaryString += stack.pop()
    }
    return binaryString
}

console.log(decimalToBinary(10))    // 1010